import Dict from './Dict'
import { mergeOptions } from './DictOptions'
export default function(Vue, options) {
  mergeOptions(options)
  Vue.mixin({
    data() {
      if(this.$options.dicts === undefined || this.$options.dicts === null) {
        return {}
      }
      const dict = new Dict()
      dict.owner = this
      return {
        dict
      }
    },
    created() {
      if(!(this.dict instanceof Dict)) {
        return
      }
      options.onCreated && options.onCreated(this.dict)
      this.dict.init(this.$options.dicts)
        .then(() => {
          options.onReady && options.onReady(this.dict)
          this.$nextTick(() => {
            this.$emit('dictReady', this.dict)
            if(this.$options.methods && this.$options.methods.onDictReady instanceof Function) {
              this.$options.methods.onDictReady.call(this, this.dict)
            }
          })
        })
    },
  })
}
